package lab.poc.erl;

public interface Pattern {

	boolean approve(Object msg);

	/**
	 * Gives a Pattern an identity to distinguish it from other patterns
	 * returned in a {@link Match} when multiple Patterns are supplied to
	 * {@link Actor#receive(Pattern...)},
	 * {@link Actor#receiveWithTimeout(long, Pattern...)},
	 * {@link Actor#accept(Pattern...)} and so on.
	 */
	<E extends Enum<E>> E type();
}
